﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Urgencias.Controlador;
using Urgencias.Modelo;

namespace Urgencias.Vista
{
    public partial class IngresarConsultaUC : UserControl
    {
        int ID_CONSULTA;
        int BOLETA;
        int BOX;
        string PACIENTE;
        string MEDICOENCARGADO;
        DateTime FECHACONSULTA;
        decimal COSTO;
        string TIPOPROCEDIMIENTO;

        public IngresarConsultaUC()
        {
            InitializeComponent();
        }

        private void IngresarConsultaUC_Load(object sender, EventArgs e)
        {
            foreach (var v in MedicoControlador.Instance.obtenerEspecialidadesMedicas())
            {
                especialidadCB.Items.Add(v);
            }
            especialidadCB.SelectedIndex = 0;
            urgenciaCB.DataSource = Enum.GetValues(typeof(NivelUrgencia));

            List<Medico> anestesistas = MedicoControlador.Instance.obtenerAnestesistas();
            foreach (Medico m in anestesistas)
            {
                string temp = m.ApellidoPaterno + " " + m.ApellidoMaterno + " " + m.Nombre;
                
                anestesistaCB.Items.Add(temp);
                //anestesistaCB.Items.A
            }


            List<Enfermeria> enfermeras = EnfermeriaControlador.Instance.obtenerEnfermeras();
            foreach (Enfermeria m in enfermeras)
            {
                string temp = m.ApellidoPaterno + " " + m.ApellidoMaterno + " " + m.Nombre;

                enfermeraCB.Items.Add(temp);
                //anestesistaCB.Items.A
            }


            List<Enfermeria> arsenaleras = EnfermeriaControlador.Instance.obtenerArsenaleras();
            foreach (Enfermeria m in arsenaleras)
            {
                string temp = m.ApellidoPaterno + " " + m.ApellidoMaterno + " " + m.Nombre;

                arsenaleroCB.Items.Add(temp);
                //anestesistaCB.Items.A
            }

        }

        public void reestablecer()
        {
            this.rutBox.ResetText();
            this.encargadoBox.ResetText();
            //this.diagnosticoBox.ResetText();
            this.urgenciaCB.SelectedIndex = 0;
            this.especialidadCB.SelectedIndex = 0;
        }

        private void guardarBTN_Click(object sender, EventArgs e)
        {
            //string RutPaciente, Especialidad, Diagnostico, Prioridad, Encargado;
            
            //Urgencia u = new Urgencia();
            //u.Diagnostico = diagnosticoBox.Text;
            /*
            if (u.DiagnosticoUrgencia.Length < 1)
            {
                MessageBox.Show(Properties.Resources.ConsultaDiagnostico);
                //diagnosticoBox.Focus();
                return;
            }*/
            PACIENTE = rutBox.Text;
            MEDICOENCARGADO = encargadoBox.Text;
            TIPOPROCEDIMIENTO = especialidadCB.Text;
            //u.PrioridadUrgencia = urgenciaCB.Text;
            
            FECHACONSULTA = DateTime.Now;

            if (ConsultaMedicaControlador.Instance.ingresarConsultaMedica(ID_CONSULTA,BOLETA,BOX,PACIENTE,MEDICOENCARGADO,FECHACONSULTA,COSTO,TIPOPROCEDIMIENTO))
            {
                reestablecer();
                MessageBox.Show(Properties.Resources.ConsultaIngreso);
            }
            else
                MessageBox.Show(Properties.Resources.ConsultaIngresoError);
        }

        private void cancelarBTN_Click(object sender, EventArgs e)
        {
            Principal.Instance.limpiar();
        }

        private void encargadoBTN_Click(object sender, EventArgs e)
        {
            Funcionario f = FuncionarioControlador.Instance.buscarFuncionarios(encargadoBox.Text);

            if (f==null)
            {
                MessageBox.Show(Properties.Resources.ConsultaBEncargadoError);
                encargadoBox.ResetText();
                encargadoBox.Focus();
            }
            else
            {
                this.nombreEncargado.Text = f.ApellidoPaterno+ " "+f.ApellidoMaterno+","+f.Nombre;
                this.urgenciaCB.Enabled = true;
                this.especialidadCB.Enabled = true;
                //this.diagnosticoBox.Enabled = true;
                this.guardarBTN.Enabled=true;
            }
        }

        private void buscarPacienteBTN_Click(object sender, EventArgs e)
        {
            Paciente p = PacienteControlador.Instance.buscarPaciente(rutBox.Text);

            if (p == null)
            {
                MessageBox.Show(Properties.Resources.ConsultaBPacienteError);
                rutBox.ResetText();
                rutBox.Focus();
            }
            else
            {
                nombrePaciente.Text = p.ApellidoPaterno+ " "+p.ApellidoMaterno+","+p.Nombre;
                rutBox.Text = p.Run;
                this.encargadoBox.Enabled = true;
                this.encargadoBTN.Enabled = true;
            }
        }

        private void limpiarBTN_Click(object sender, EventArgs e)
        {
            reestablecer();
            rutBox.Focus();
        }

        private void nameArsenaleroTB_TextChanged(object sender, EventArgs e)
        {

        }

        private void ArsenaleroBTN_Click(object sender, EventArgs e)
        {

        }

        private void encargadoBox_Leave(object sender, EventArgs e)
        {
            encargadoBox.Text = encargadoBox.Text.ToUpper();
        }
    }
}
